import 'package:flutter/material.dart';
import 'package:getx_scaffold/getx_scaffold.dart';

/// ThemeColor 类提供了一组静态属性，用于访问当前主题中常用的颜色。
/// 这些颜色由 Material Design 的 ColorScheme 定义，并根据当前的主题（亮/暗模式）进行调整。
/// 使用 Get.context 结合 GetX 框架获取当前的 BuildContext 来访问主题颜色。

class ThemeColor {
  // 主颜色，通常用于应用的主要元素，比如 AppBar、按钮等
  static get primary => Theme.of(Get.context!).colorScheme.primary;

  // 主颜色上的文本或图标颜色，确保与主颜色对比足够强烈，通常是白色或黑色
  static get onPrimary => Theme.of(Get.context!).colorScheme.onPrimary;

  // 主容器颜色，用于主色的浅色背景容器
  static get primaryContainer => Theme.of(Get.context!).colorScheme.primaryContainer;

  // 主容器上的文本或图标颜色，确保与主容器颜色对比强烈
  static get onPrimaryContainer => Theme.of(Get.context!).colorScheme.onPrimaryContainer;

  // 辅助颜色，通常用于次要元素，例如浮动操作按钮或次级按钮
  static get secondary => Theme.of(Get.context!).colorScheme.secondary;

  // 辅助颜色上的文本或图标颜色，确保与辅助颜色对比足够强烈
  static get onSecondary => Theme.of(Get.context!).colorScheme.onSecondary;

  // 辅助容器颜色，通常用于次要元素的背景
  static get secondaryContainer => Theme.of(Get.context!).colorScheme.secondaryContainer;

  // 辅助容器上的文本或图标颜色，确保与辅助容器颜色对比强烈
  static get onSecondaryContainer => Theme.of(Get.context!).colorScheme.onSecondaryContainer;

  // 第三级颜色，通常用于装饰性元素或小组件
  static get tertiary => Theme.of(Get.context!).colorScheme.tertiary;

  // 第三级颜色上的文本或图标颜色，确保与第三级颜色对比强烈
  static get onTertiary => Theme.of(Get.context!).colorScheme.onTertiary;

  // 第三级容器颜色，用于第三级颜色的背景容器
  static get tertiaryContainer => Theme.of(Get.context!).colorScheme.tertiaryContainer;

  // 第三级容器上的文本或图标颜色，确保与第三级容器颜色对比强烈
  static get onTertiaryContainer => Theme.of(Get.context!).colorScheme.onTertiaryContainer;

  // 错误颜色，通常用于表示警告或错误状态
  static get error => Theme.of(Get.context!).colorScheme.error;

  // 错误颜色上的文本或图标颜色，确保与错误颜色对比足够强烈
  static get onError => Theme.of(Get.context!).colorScheme.onError;

  // 错误容器颜色，通常用于包含错误信息的容器背景
  static get errorContainer => Theme.of(Get.context!).colorScheme.errorContainer;

  // 错误容器上的文本或图标颜色，确保与错误容器颜色对比强烈
  static get onErrorContainer => Theme.of(Get.context!).colorScheme.onErrorContainer;

  // 表面颜色，用于应用的背景或卡片组件
  static get surface => Theme.of(Get.context!).colorScheme.surface;

  // 表面颜色上的文本或图标颜色，确保与表面颜色对比强烈
  static get onSurface => Theme.of(Get.context!).colorScheme.onSurface;

  // 表面变体颜色，通常用于次级背景
  static get onSurfaceVariant => Theme.of(Get.context!).colorScheme.onSurfaceVariant;

  // 轮廓颜色，用于边框或分隔线
  static get outline => Theme.of(Get.context!).colorScheme.outline;

  // 轮廓变体颜色，用于比 outline 更不显眼的边框
  static get outlineVariant => Theme.of(Get.context!).colorScheme.outlineVariant;

  // 阴影颜色，用于投影效果
  static get shadow => Theme.of(Get.context!).colorScheme.shadow;

  // 遮罩颜色，用于模糊或背景遮罩效果
  static get scrim => Theme.of(Get.context!).colorScheme.scrim;

  // 反向表面颜色，通常在暗模式下用于亮色背景
  static get inverseSurface => Theme.of(Get.context!).colorScheme.inverseSurface;

  // 反向表面颜色上的文本或图标颜色
  static get onInverseSurface => Theme.of(Get.context!).colorScheme.onInverseSurface;

  // 反向主颜色，通常在暗模式下用于亮色主元素
  static get inversePrimary => Theme.of(Get.context!).colorScheme.inversePrimary;

  // 表面颜色的叠加色，通常用于表面元素上的渐变或高亮
  static get surfaceTint => Theme.of(Get.context!).colorScheme.surfaceTint;
}